xeeynamo (Normal User)
Pro
Messaggi: 66
Iscritto: 14/03/2008
|
Questo topic è stato chiuso dal moderatore Salve, stò facendo un programma in C# e ho difficoltà a risolvere questo seguente problema:
Ho un vettore di tipo byte (Dichiarato con byte[] rom=new byte[0x100000]) che legge un intero file di dimensione fissa (1048576 byte) mettendolo nella variabile rom (uso file.Read(rom, 0, (int)file.Length); )
Una volta fatto questo ho bisogno di leggere parte di quel vettore (Ad esempio partendo dall'offset 0x2000 e magari aquisendo un tot di byte) come testo e metterlo in un TextBox. Come posso fare?
|
|
Gianluca87 (Ex-Member)
Expert
Messaggi: 300
Iscritto: 16/11/2008
|
Postato originariamente da xeeynamo:
Salve, stò facendo un programma in C# e ho difficoltà a risolvere questo seguente problema:
Ho un vettore di tipo byte (Dichiarato con byte[] rom=new byte[0x100000]) che legge un intero file di dimensione fissa (1048576 byte) mettendolo nella variabile rom (uso file.Read(rom, 0, (int)file.Length); )
Una volta fatto questo ho bisogno di leggere parte di quel vettore (Ad esempio partendo dall'offset 0x2000 e magari aquisendo un tot di byte) come testo e metterlo in un TextBox. Come posso fare? |
prova così magari è una cosa banale che hai già provato
2 variabili puntatori
Codice sorgente - presumibilmente C# / VB.NET |
int _vi; //Variabile inizio
int _vf; //Variabile fine
string _Risultato = null;
for(int i = _vi; i <= _vf; i++)
{
_Risultato += rom[i].ToString();
}
|
l'esempio quasi sicuramente non funziona, serve solamente per darti un idea... ci sono sicuramente funzioni più evolute per farlo...prova a documentarti sugli array, vettori ecc per c# Ultima modifica effettuata da Gianluca87 il 03/07/2009 alle 9:58 |
|
xeeynamo (Normal User)
Pro
Messaggi: 66
Iscritto: 14/03/2008
|
Postato originariamente da Gianluca87:
prova così magari è una cosa banale che hai già provato
2 variabili puntatori
Codice sorgente - presumibilmente C# / VB.NET |
int _vi; //Variabile inizio
int _vf; //Variabile fine
string _Risultato = null;
for(int i = _vi; i <= _vf; i++)
{
_Risultato += rom[i].ToString();
}
|
l'esempio quasi sicuramente non funziona, serve solamente per darti un idea... ci sono sicuramente funzioni più evolute per farlo...prova a documentarti sugli array, vettori ecc per c# |
No, purtroppo non è ciò che cercavo perchè così facendo mi restituirebbe il valore in decimale sotto forma di testo, il che non mi servirebbe granchè... In c++ tipo avrei fatto così:
Codice sorgente - presumibilmente Plain Text |
for(int i=0;i<0x10000;i++) printf("%c",rom[i]);
|
oppure così:
Codice sorgente - presumibilmente C# / VB.NET |
char *buffer=(char*)malloc(0x10000);
fread(buffer,0x800,0x200,pFile);
printf("%s",buffer);
|
dove invece di mettere l'intero file in un buffer, metto solo la porzione di file che mi serve e la stampo. Però lì darei l'output su console, ma dato che a me servirebbe un'applicazione grafica...
Inoltre se provo a fare tText.Text=Vars.rom.ToString(); nella TextBox mi comparirà System.Byte[]
Il file che viene caricato inoltre, è in forma binaria (Di fatti l'obiettivo di questo programma è modificare i dialoghi di un giochetto per snes :P) quindi volendo manco lo si può caricare interamente sotto forma di testo |
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Codice sorgente - presumibilmente C# |
IO. BinaryReader Reader = new IO. BinaryReader(new IO. FileStream("file", IO. FileMode. Open));const Int32 Length = 0x800; byte[] Buffer = new byte[Length ]; Reader.BaseStream.Position = 0x200; Buffer = Reader.ReadBytes(Length); Reader.Close(); string Text = System.Text.UTF8Encoding.UTF8.GetString(Buffer);
|
Ultima modifica effettuata da Il Totem il 03/07/2009 alle 13:20 |
|
xeeynamo (Normal User)
Pro
Messaggi: 66
Iscritto: 14/03/2008
|
Postato originariamente da Il Totem:
Codice sorgente - presumibilmente C# |
IO. BinaryReader Reader = new IO. BinaryReader(new IO. FileStream("file", IO. FileMode. Open));const Int32 Length = 0x800; byte[] Buffer = new byte[Length ]; Reader.BaseStream.Position = 0x200; Buffer = Reader.ReadBytes(Length); Reader.Close(); string Text = System.Text.UTF8Encoding.UTF8.GetString(Buffer);
|
|
OTTIMO!!! Grazie mille!!! Però ho riadattato tutto in base al mio codice sorgente.. Al posto del BinaryReader ho usato il FileStream e per leggere ho usato
Codice sorgente - presumibilmente Plain Text |
Main.file.Position = 0x24ADE;
Main.file.Read(Vars.rom, 0, 0x2F);
|
e infine come Encoding ho usato l'ASCII:
Codice sorgente - presumibilmente Plain Text |
textGame.Text = System.Text.ASCIIEncoding.ASCII.GetString(Vars.rom);
|
Grazie a tutti ragà |
|